c语言 int操作bit,C语言,使用共用体和结构体 查看int型的bit散布
C语言,使用共用体和结构体 查看int型的bit分布
代码如下,给a.num赋值255后,a.bits里的b0到b7应该是1,
可结果都是-1 ,为什么?
#include
struct Bit{
short b0 : 1;
short b1 : 1;
short b2 : 1;
short b3 : 1;
short b4 : 1;
short b5 : 1;
short b6 : 1;
short b7 : 1;
short b8 : 1;
short b9 : 1;
short b10 : 1;
short b11 : 1;
short b12 : 1;
short b13 : 1;
short b14 : 1;
short b15 : 1;
short b16 : 1;
short b17 : 1;
short b18 : 1;
short b19 : 1;
short b20 : 1;
short b21 : 1;
short b22 : 1;
short b23 : 1;
short b24 : 1;
short b25 : 1;
short b26 : 1;
short b27 : 1;
short b28 : 1;
short b29 : 1;
short b30 : 1;
short b31 : 1;
};
union Number{
int num;
struct Bit bits;
};
void main(){
union Number a = { 255 };
getchar();
}
------解决思路----------------------
定义成 unsigned short 就是 1 了
------解决思路----------------------
1 (补码)用来表示1位有符号数,其符号位为1,表示负数。其绝对值为按各位取反后再末位+1,即1取反后为0,0+1=1。
综上所述,1 (补码)用来表示1位有符号数,对应-1
------解决思路----------------------
内存里都是一个 bit 的 1
只是这个 1 按有符号数来解释的话最高位是符号位,这里的最高位就是这个唯一的位了,它是 1 就表示是负数,至于负的多少就是按楼上的补码算法来确定的
------解决思路----------------------
不是“除了符号位什么都没有了,勉为其难 解释为-1”;
而是“其符号位为1,表示负数。其绝对值为按各位(即所有位包括符号位)取反后再末位+1,即1取反后为0,0+1=1。”
------解决思路----------------------
short 拿到的结果应该是 0xFFFF 所以实际上显示为 -1……
像这种结构体位域最好用无符号的
------解决思路----------------------
引用:Quote: 引用:Quote: 引用:Quote: 引用:Quote: 引用:short 拿到的结果应该是 0xFFFF 所以实际上显示为 -1……
像这种结构体位域最好用无符号的
你的回答是错误的,按你的说法,则 b0到b1都应该是-1,而不是只有b0到b7是1了
写错了,应该是"则 b0到b31都应该是-1,而不是只有b0到b7是1了"你赋值只给了个 255 ,才 1 个字节,8 位,怎么可能全都是 -1?
所以说 一个short 只拿到一个 1,而不是 0xFFFF算了,我说的你没看懂,不想解释了。
------解决思路----------------------
位段,按照所有位数计算,最高位是其所有位数中的最高位,而不是类型的最高位。
short 本身是 16Bits,但是你这里 因为是位段,只占1 bit .这个1bit 就是最高位了
由于 没有数据位,只有符号位,所以只能表示 0,-1 两个数
有符号数,是所谓的补码数,最高位 表示符号,
其它位:
正数 用原码,
负数用补码(反码加一)表示。
位段的位数,只要不等于, 类型位数本身,
那么 最高位就只是位段,所有位中的最高位,而不是类型的最高位。
位段的表示方法,和有符号数表示方法,在这点上略有不同,因为位段 和有符号数的位数往往不同。
往往要比有符号数本身的位数少。
------解决思路----------------------
如果依然按照 16Bits short 来表示的话,那就永远没有符号位了
所以 ,有符号位段,实际上是按照位段的位数表示的有符号数,
不是C语言的内部数据类型的有符号数
------解决思路----------------------
位段的数据类型,只是表示该位段参与+-*/等算术运算时,
当作什么类型的整数使用,
以及最多占有多少 Bits,有无符号等等。
最终还是要按照实际占有 Bits多少,来表示和解释的。
------解决思路----------------------
有符号数,是所谓的补码数
最高位表示符号,
若最高位为0,表示正数,其绝对值为所有位包括符号位的原码对应二进制数
若最高位为1,表示负数,其绝对值为所有位包括符号位全部按位取反,再末尾加一后对应的二进制数
c语言 int操作bit,C语言,使用共用体和结构体 查看int型的bit散布相关推荐
- C语言中的结构体,结构体中数组初始化与赋值
最近写c语言中的结构体遇到了些问题,从网上找了些资料如下: 结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论: 1.结构体的 ...
- C语言之玩转结构体1——结构体定义与声明
文章目录 一.前言 二.名词解释 三.结构体声明 四.结构体定义及初始化 五.运行 六.结语 一.前言 结构体作为C语言中的重要一环,可以用它来对数据进行封装,把一些相似的成员放在同一个结构体中,其对 ...
- 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习
Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...
- C语言结构体和结构体数组示例 - Win32窗口程序演示
C语言结构体和结构体数组的使用: /* C结构体和结构体数组示例,by bobo */#include <windows.h>LRESULT CALLBACK WndProc (HWND, ...
- 结构体嵌套结构体c语言,结构体的相互嵌套
编程时要用到C语言中结构体的自引用,由于用的少,学得时候也没在意,趁用到,回忆一下. 结构体的自引用(self reference),就是在结构体内部,包含指向自身类型结构体的指针. 结构体的相互引用 ...
- C语言项目实战:24点游戏计算器(基于结构体、指针、函数、数组、循环等知识点)
文章目录 C语言项目实战:24点游戏计算器(基于结构体.指针.函数.数组.循环等知识点) 前言:24点游戏计算器的规则如下 一.项目的创建标 1.选择项目 2.输入项目名称和路径 3.创建头文件Mai ...
- C语言概述(三)-- 宏定义、指针、结构体
宏定义 指针 结构体 1.宏定义 #define 每个参数加上括号,结果也加上括号 否则,可能会因为运算的优先级问题导致结果错误 #define ADD(a,b) ((a ...
- C语言结构体和结构体指针的简单用法
C语言结构体和结构体指针的简单用法 这里总结一下自己的学习笔记,关于C语言当中的结构体指针的用法,以及结构体简单使用. 简单介绍一下今天出场的嘉宾–>结构体和结构体指针 什么是结构体: 1,定义 ...
- C语言结构体与结构体指针的使用
C语言结构体与结构体指针的使用 tips:最近要好好学习一下数据结构,所以必不可少的就是c语言的结构体和结构体指针了,所以就整理一下这些基础知识 c语言结构体(struct)是由一系列具有相同类型或不 ...
- c语言程序设计 第三版 哈工大,C语言程序设计_哈工大(3):指针与结构体.pdf...
圳 职 业 技 术 学 院Shenzhen Polytechnic 八单元(3):指针与结构体 教学内容 指针与结构体 教学目标 应知 指向结构体变量的指针 指向结构体数组的指针 指向结构体的指针作函 ...
最新文章
- 如何啃下C++这块复杂又难学的硬骨头?
- ASP.NET(c#)实现重定向的三种方法的总结
- sqlite可视化工具推荐
- cmake cache变量_反复研究好几遍,我才发现关于 CMake 变量还可以这样理解!
- 用asp.net实现日历打卡_清单 | 2021年日历请查收
- Euclidean, Manhattan, hop-count distance 区别
- ios弧形进度条_iOS圆弧渐变进度条的实现
- IDEA如何导入项目
- 《Dive Into Deeping Learing》学习笔记:深度学习基础
- 寻仙服务器要维护多久,新寻仙正式服5.0.6.1更新公告
- 信息流推广与普通搜索推广的区别与优势是什么?
- 【期末不挂】离散数学 · 常考题型你都会了叭~
- .Net服务器性能监控,应用耗时统一监控平台
- Unity - 搬砖日志 - 打开项目时崩溃/或是运行不起unity的日志
- matlab怎么选清浊音做短时谱,语音信号处理实验三
- js去掉最后一个逗号
- 解决:python爬取豆瓣电影遇到的KeyError: 'subject_collection_items'错误
- 寒假第三周学习总结与反思
- 摇摇棒C语言程序,AT89S52单片机16LED摇摇棒设计(含pcb文件,源程序等)
- 软件工程导论张海蕃书籍pdf_软件工程导论张海蕃 课后习题答案
热门文章
- iPhone界面学习(2)
- ASP.NET MVC应用中一个诡异错误的处理
- 嵌入式linux入门六步曲
- OpenCvSharp4初识
- 传智播客黑马 Python学习笔记之python初识
- Grammarly SCI语法检查总结
- Atitit atimvc rest原理与自定义实现t33 目录 1.1. Web.xml	1 1.2. MvcFilter	2 1.3. jerserMeth	4 原理 过滤器 过滤即可
- Atitit React的相关概念东东 attilax总结
- Atititi. naming spec 联系人命名与remark备注指南规范v5 r99.docx
- atitit agt sys 设置下级代理功能设计.docx