C|位运算模拟算术运算及某些位置0、置1、取反
yund56 2025-05-11 01:46 3 浏览
1 按位与置0、按位或置1,按位异或取反
#include <stdio.h>
void printBinary(unsigned a)
{
printf("\n%10u %X ",a,a);
for(int i=31;i>=0;i--)
{
if((i+1)%4 == 0)
printf(" ");
if((a>>i & 1) == 1)
printf("1");
else
printf("0");
}
}
void test()
{
unsigned data = 0x12345678; // 305419896 // dec
// 0001 0010 0011 0100 0101 0110 0111 1000 // binary
printBinary(data);
printf(" 原数据\n");
unsigned mask = 0xFFFF0000;
printBinary(mask);
printf(" 掩码\n");
unsigned a = data & mask;
printBinary(a);
printf(" 按位与&,后16位置0\n");
unsigned b = data | mask;
printBinary(b);
printf(" 按位或|,前16位置1\n");
unsigned c = data ^ mask;
printBinary(c);
printf(" 按位异或^,前16位取反\n");
}
int main()
{
test();
getchar();
return 0;
}
/*
305419896 12345678 0001 0010 0011 0100 0101 0110 0111 1000 原数据
4294901760 FFFF0000 1111 1111 1111 1111 0000 0000 0000 0000 掩码
305397760 12340000 0001 0010 0011 0100 0000 0000 0000 0000 按位与&,后16位置0
4294923896 FFFF5678 1111 1111 1111 1111 0101 0110 0111 1000 按位或|,前16位置1
3989526136 EDCB5678 1110 1101 1100 1011 0101 0110 0111 1000 按位异或^,前16位取反
*/
2 按位运算与算术运算
2.1 二进制无进位加法
按位异域 | 0 | 0 | 1 | 1 |
^ | 0 | 1 | 0 | 1 |
0 | 1 | 1 | 0 |
2.2 二进制加法的进位
按位与 | 0 | 0 | 1 | 1 |
& | 0 | 1 | 0 | 1 |
0 | 0 | 0 | 1 |
2.3 整型乘除
2.3.1 整型与一个2的某次幂相乘
用移位实现乘除法运算
a=a<<3; // a=a*(2^3);
b=b>>3; // b=b/(2^3);
2.3.2 整型与一个非2的某次幂相乘
a = a<<3+a; // a=a*9→a=a*(a^3+1)
3 整型按位乘法
移位相加实现二进制乘法:
移位、相加:
10110011*1101 // 179*13
= 179<<0*1+179<<1*0+179<<2*1+179<<3*1
= 0000 0000 0000 0000 1001 0001 0111 //2327
4 整型按位除法
2进制完成除法运算就是移位相减,比如1011011除以1110(91/14)顺序如下:
被除数 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
除数左对齐 | 1 | 1 | 1 | 0 |
除数对齐到小于被除数的位置
被除数 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | |
1 | 1 | 1 | 0 | |||||
商 | 1 | 0 | 0 | |||||
余数 | 1 | 0 | 0 | 0 | 1 | 1 |
余数继续相除:
被除数 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
除数 | 1 | 1 | 1 | 0 | |||
商 | 1 | 0 | 0 | ||||
余数 | 1 | 0 | 0 | 0 | 1 | 1 | |
除数 | 1 | 1 | 1 | 0 | |||
商 | 1 | 1 | 0 | ||||
余数 | 1 | 1 | 1 |
1011011 / 1110 = 110 + 111 // 91/14 = 6+7
1011011 = 1110 * 0000110 + 111 // 91 = 14 * 6 + 7
-End-
相关推荐
- 重生之我在头条学html网页编程,这一世我一定学好,成为编程高手
-
有人要问了html是什么东西?就是用来设计网页的一种语言会不会很难啊?这是很多朋友担心的,我告诉大家这是最简单最基础也最容易学习的一款入门级语言,当初我也是经常因为学不会C语言而苦恼自从学习了html...
- 如何在网页3D CAD中创建一个三维管道模型
-
前言在网页CAD中进行三维建模是一项有趣的任务。本文将介绍如何利用mxcad3d来创建三维管道模型。该工具提供了一系列三维建模功能的API,使得建立复杂的管道结构变得简单直观。安装在此之前,需要先安装...
- 网页模版如何用
-
网页模版已成为如今网站建设的核心工具。随着互联网需求的增长,越来越多的企业和组织需要建立自己的网站,以展示他们的品牌和服务。在这个过程中,网页模版为他们提供了一种简单而高效的方式来构建网站。所谓网页模...
- AI嵌入式Flowcode编程网页开发人员入门指南
-
WebDeveloper允许使用FlowcodeIDE环境开发具有交互性的网页。可以在2D面板中添加特殊网页组件,以创建网页的视觉表示,并可以使用流程图添加交互功能。它的引入意味着Flowcod...
- 用Deepseek制作网页版的汉诺塔游戏保姆级教程
-
在deepseek中输入:“帮我做一个网页版的汉诺塔演示游戏,游戏包含2层、3层、4层、5层的汉诺塔游戏演示,制作自动求解演示按钮,点击按钮就可以生成出步数,同时自动演示最优解动画。”最后把生成的程序...
- TaskBuilder前端页面CSS样式规则设置
-
在前端页面设计器内,点击底部的“CSS样式”选项卡,可以打开CSS样式设计器,在此查看和设计当前页面的CSS样式规则,如下图所示:3.3.6.1引入外部样式文件如果要在页面中引入外部CSS文件,可以点...
- 使用 Python、FastHTML 和 Uvicorn 构建简单的博客网站
-
FastHTML是2024年7月推出的PythonWeb框架,是一个简单但功能强大的框架,允许开发人员使用纯Python构建Web应用程序。(不需要复杂的模板引擎)。Fast...
- 用AI可以生成HTML网页了,很多初级前端都要失业了
-
即使你完全不懂html,javascript,css,也能做出漂亮的网页,这在以前是不可想象的,而现在确是可行的,因为有这样一个项目:openUI。openUI不仅仅能生成html页面,还能生成自适应...
- python原始套接字socket下载http网页文件到txt
-
python原始套接字socket下载http网页文件到txtimportsocketdefdownload_webpage(url,output_file):try:...
- 高效排版:实现DeepSeek生成内容Word格式排版并导...
-
高效排版:实现DeepSeek生成内容Word格式排版并导出的经典方法,步骤简洁高效:DeepSeek生成内容复制出来容易出现乱码,下面介绍一种比较高效简单的方法!一、核心三步法1.调整模型模式在D...
- 打工人福音!3分钟教你学会word精美排版
-
昨天大熊介绍了word一键排版的三种办法,今天我们来详细讲讲第二种办法,用html代码实现一键排版,然后再导出pdf实现精美效果。打工人,打工魂,你是不是也有以下烦恼?下面是我经过多次和Deepsee...
- 使用 HTML 创建可折叠的交互式组件,一行 JS 代...
-
如果你想创建一个可折叠的交互式组件,使用<details>元素即可,一行JavaScript也不用写。<details>组件定义了一个可折叠的容器,它的第一个元素必须...
- 新手小白1分钟学会Word——文档的编辑1.1
-
天空一声巨响,迷人的我闪亮登场,亲爱的家人们,周末好呀!话不多说,咱们继续开干!昨天说到本节还有个小尾巴,那咱们就把这个小尾巴了结了,然后开始新篇章~四、保存文档我们对文档编辑完之后最重要的一步就...
- 超强!DeepSeek+HTML制作数据看板,老板看了都点赞
-
DeepSeek以极强的推理能力,支持生成各种代码,比如Python、SQL、Matlab、JS、HTML等,你可以拿这些代码放到编译器里,就能直接跑出结果,比如机器学习算法、exe应用、可视化图表、...
- 什么是Tailwind CSS
-
什么是TailwindCSSTailwindCSS是一个实用优先(Utility-First)的CSS框架,其核心思想是通过直接在HTML中组合预定义的类名来快速构建界面样式,无需编写传...
- 一周热门
- 最近发表
- 标签列表
-
- filter函数js (37)
- filter函数excel用不了 (73)
- 商城开发 (40)
- 影视网站免费源码最新版 (57)
- 影视资源api接口 (46)
- 网站留言板代码大全 (56)
- java版软件下载 (52)
- java教材电子课本下载 (48)
- java技术的电子书去哪看 (33)
- 0基础编程从什么开始学 (50)
- java是用来干嘛的 (51)
- it入门应该学什么 (55)
- java线上课程 (55)
- 学java的软件叫什么软件 (38)
- 程序开发软件有哪些 (53)
- 软件培训 (59)
- 机器人编程代码大全 (50)
- 少儿编程教程免费 (45)
- 新代系统编程教学 (61)
- 共创世界编程网站 (38)
- 最容易入门的编程语言 (33)
- 亲测源码 (36)
- tan sin cos 图 (33)
- 三角函数积分公式表 (35)
- 函数的表示方法 (34)