<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>S12 / MagniV MicrocontrollersのトピックRe: About BitField</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168573#M5545</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I see no problem with this. In C you can't expect&amp;nbsp;particular order, alignment, or padding of struct or union elements. Bitfields are there to allow&amp;nbsp;saving memory. Having big arrays of small data types it may make sense to use bitfields to save space.&lt;/P&gt;&lt;P&gt;Union is there in C to reuse the same memory to store different types. For example you may have struct, which has two fields, one enum describes data type like char, int, float etc, another field is a union of char/int/float etc.&lt;/P&gt;&lt;P&gt;What you do is some kind of cheating or tricky programming. It is bad practice, at least because your code is not portable and won't work with all compilers and all targets.&lt;/P&gt;&lt;P&gt;You may look in compiler settings. I think there is an option to specify order of bitfields members, which is of no interest to people doing portable programs. Portable would be to use &amp;lt;&amp;lt; &amp;gt;&amp;gt; | &amp;amp; operators to extract and put fields into integers or arrays of chars.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 01 Jun 2012 20:27:28 GMT</pubDate>
    <dc:creator>kef</dc:creator>
    <dc:date>2012-06-01T20:27:28Z</dc:date>
    <item>
      <title>About BitField</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168572#M5544</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello! I'm using XET256 &amp;nbsp;CodeWarrior IDE version V5.9.0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have defined a UNION &amp;nbsp;&lt;/P&gt;&lt;PRE&gt;typedef union{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word XLength:8;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word nouse:5;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word datatype:1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; word operation:2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }Sx;&amp;nbsp; struct{&amp;nbsp; word XLength:5;&amp;nbsp; word YLength:8;&amp;nbsp; word datatype:1;&amp;nbsp; word operation:2; }Sxy;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct{&amp;nbsp; word lbits: 10;&amp;nbsp; word invalidFlag: 1;&amp;nbsp; word hbits: 5; }Sinvalid;&amp;nbsp; word w;}UIndexType;UIndexType typeP;typeP.w=0x401e;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;but in debug ,the result is &amp;nbsp;so wrong ,&lt;/P&gt;&lt;PRE&gt;typeP&amp;nbsp;&amp;nbsp;&amp;nbsp; Sx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;2&amp;gt; struct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x40 unsigned char [0:8]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nouse&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1e unsigned char [0:5]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; datatype&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp; unsigned char [5:1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp; unsigned char [6:2]&amp;nbsp;&amp;nbsp;&amp;nbsp; Sxy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;2&amp;gt; struct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1e unsigned short[0:5]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; YLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp; unsigned shor[5:8]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; datatype&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp; unsigned short[13:1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1&amp;nbsp; unsigned short[14:2]&amp;nbsp;&amp;nbsp;&amp;nbsp; Sinvalid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;2&amp;gt; struct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lbits&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1e unsigned short[0:10]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; invalidFlag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0&amp;nbsp; unsigned shor[10:1]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hbits&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8&amp;nbsp; unsigned short[11:5]&amp;nbsp;&amp;nbsp;&amp;nbsp; w&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x401e unsigned int&amp;nbsp; &lt;/PRE&gt;&lt;P&gt;&lt;SPAN&gt;And if I define &amp;nbsp;word &amp;nbsp;XLength :9 &amp;nbsp; word nouse:5 &amp;nbsp;the result is right ,&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;what's wrong of that ? The same code in CodeWarrior IDE version v4.6 is al right.I am being crazy.&amp;nbsp;if there are some bugs in IDE Please tell me &amp;nbsp;I'm in hurry.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:16:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168572#M5544</guid>
      <dc:creator>zy</dc:creator>
      <dc:date>2020-10-29T09:16:10Z</dc:date>
    </item>
    <item>
      <title>Re: About BitField</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168573#M5545</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I see no problem with this. In C you can't expect&amp;nbsp;particular order, alignment, or padding of struct or union elements. Bitfields are there to allow&amp;nbsp;saving memory. Having big arrays of small data types it may make sense to use bitfields to save space.&lt;/P&gt;&lt;P&gt;Union is there in C to reuse the same memory to store different types. For example you may have struct, which has two fields, one enum describes data type like char, int, float etc, another field is a union of char/int/float etc.&lt;/P&gt;&lt;P&gt;What you do is some kind of cheating or tricky programming. It is bad practice, at least because your code is not portable and won't work with all compilers and all targets.&lt;/P&gt;&lt;P&gt;You may look in compiler settings. I think there is an option to specify order of bitfields members, which is of no interest to people doing portable programs. Portable would be to use &amp;lt;&amp;lt; &amp;gt;&amp;gt; | &amp;amp; operators to extract and put fields into integers or arrays of chars.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Jun 2012 20:27:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168573#M5545</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2012-06-01T20:27:28Z</dc:date>
    </item>
    <item>
      <title>Re: About BitField</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168574#M5546</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thankyou ! I will change code to avoid this problem .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Jun 2012 20:47:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/About-BitField/m-p/168574#M5546</guid>
      <dc:creator>zy</dc:creator>
      <dc:date>2012-06-01T20:47:33Z</dc:date>
    </item>
  </channel>
</rss>

